Recovery techniques may be utilized to stabilize a system after a failure. Failures may be caused by hardware faults (e.g., power failure or disk failure), software faults (e.g., programming errors or invalid data), or human error. After a failure, applications may resume transactions only after attempting to restore the system to a consistent state. Such attempts may include repeating and reverting at least some changes that took place before the failure occurred, also known as “redo” recovery and “undo” recovery respectively. After the system is recovered, new transactions may begin. Thus, new transactions associated with a corrupted change may execute successfully, since those corrupted changes have been restored.